package com.example.EventBusTest;

import android.os.Bundle;
import org.simple.eventbus.EventBus;

/**
 * Created by Jaaksi on 2015/9/1.<br/>
 * AndroidEventBus 工具类<br/>
 * // ----------- 通过Subscriber注解来标识事件接收对象中的接收方法 ------------<br/>
 * // 在接收（register的地方）的Activity等中调用，方法名可以任意，参数与post一致，必须写注解<br/>
 * // 接收方法,默认的tag,执行在UI线程<br/>
 *
 * @Subscriber private void updateUser(User user) { }
 *             <p/>
 *             // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数,执行在UI线程
 * @Subscriber(tag = "my_tag") private void updateUserWithTag(User user) { }
 *                 <p/>
 *                 // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数, //
 *                 post函数在哪个线程执行,该函数就执行在哪个线程
 * @Subscriber(tag = "my_tag", mode= ThreadMode.POST) private void
 *                 updateUserWithMode(User user) { }
 *                 <p/>
 *                 // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数,执行在一个独立的线程
 * @Subscriber(tag = "my_tag", mode = ThreadMode.ASYNC) private void
 *                 updateUserAsync(User user) { }
 */
public class EventBusTool
{
	/**
	 * 默认tag
	 */
	public static final String DEFAULT_TAG = "default_tag";

	/**
	 * 这里可以是一个bundle, 取代通过intent、广播等传递消息
	 * 
	 * @param event
	 */
	public static void post(Object event)
	{
		EventBus.getDefault().post(event);
	}

	public static void post(Object event, String tag)
	{
		EventBus.getDefault().post(event, tag);
	}

	public static void postSticky(Object event, String tag)
	{
		EventBus.getDefault().postSticky(event, tag);
	}

	/**
	 * 注册对象
	 *
	 * @param subscriber
	 */
	public static void register(Object subscriber)
	{
		EventBus.getDefault().register(subscriber);
	}

	public static void registerSticky(Object subscriber)
	{
		EventBus.getDefault().registerSticky(subscriber);
	}

	/**
	 * 注销对象
	 *
	 * @param subscriber
	 */
	public static void unregister(Object subscriber)
	{
		EventBus.getDefault().unregister(subscriber);
	}
}
